package Year22_Month04.day23;

public class 反转链表_递归版本 {
    public ListNode reverseList(ListNode head) {
        return reverseList(null,head);
    }
    //递归版本其实重点就是弄清楚临界条件和每一次的递归都做了什么
    public ListNode reverseList(ListNode pre,ListNode cur) {
        if(cur == null){
            //每一次的反转其实就是当前节点和当前节点的前一个节点进行反转
            return pre;
        }
        //定义当前节点的下一个节点用来充当下一次方法调用的cur，当前cur就是下一次的pre
        ListNode fac = cur.next;
        cur.next = pre;
        return reverseList(cur,fac);
    }
}
